The present invention relates to image processing, and in particular, to systems and methods for processing and coding image data.
For many years, images were processed as analog signals. Traditionally, analog signal representations of still or moving images were used to represent a color space such as Red-Green-Blue (RGB) or Luminance and Chrominance (e.g., YUV). The analog color space signals were then used for broadcasting, transmission, or to drive the mechanisms of a CRT tube, for example, to display the images to an audience. With the growth of digital technology, it became possible to store, transfer, and display images using digital signals. Using digital technology, still images or video can be represented as digital data (i.e., image data), and then processed, transmitted, displayed, or stored as zeros and ones.
The growth of digital mechanisms for generating digital image data has led to an ever increasing amount of digital image data and a corresponding increase in demand for image data processing capacity. For example, digital still cameras, digital video cameras, digital video broadcasting (e.g., set top cable boxes), and computer generated graphic images have led to an explosion in the amount of digital image data that requires some form of processing. To understand the magnitude of the challenge, it is important to understand that images, videos, and graphics contain extraordinarily large amounts of information. In a digital still image, such as images from a digital camera, image data may represent an image at a single point in time. In digital video, a constant flow of image data may create the illusion of movement on a display. It is generally desirable to display images such that any distortion of the image is imperceptible to the human eye. For instance, digital still images are static and may not change. Accordingly, digital still images may require large amounts of information so that the human eye cannot perceive any distortion in the colors or shapes in the image. On the other hand, digital video requires even more image data to represent changing images over time. Accordingly, storing, transmitting, processing, and displaying large amounts of information is an ongoing technical challenge.
Typically, images are represented as frames. Each frame may include numerous pixels arranged in an array, where each pixel is used to represent a particular color combination at a particular point in the frame. The display resolution of a digital television or display typically refers to the number of columns and rows of pixels creating the display (e.g., 1280×1024). Accordingly, a single frame to be displayed on a 1280×1024 display may similarly comprise 1280×1240 pixels. Each pixel, in turn, may be represented digitally in a particular color space and format. For example, one format for an RGB pixel may have a color value represented as three (3) bytes—one 8-bit byte for Red, one 8-bit byte for Green, and one 8-bit byte for Blue. From the above example, it can be seen that a single frame may include 1280×1240×3×8=4 MBytes. Higher resolution images or graphics or long duration video can easily increase the amount of image data to tens or hundreds of MBytes or even many GBytes.
To overcome the challenges faced by the magnitude of data associated with image processing, a variety of formats and coding technologies have emerged to reduce the amount of image data to be processed while maintaining as much of the image quality as possible. Image formatting typically refers to the way digital data is organized and processed. For example, the image data may be in an ARGB format, where each pixel may include four (4) 8-bit bytes—one for transparency, A, and one for each of R, G, and B, as described above—and the pixels are organized and process in 8×4 blocks (or data units). Alternatively, the image data may be in a YUV format, where each pixel may include 4-bits for Y, 2-bits for U, and 2-bits for V (denoted YUV 4:2:2), and the pixels are organized and processes in 16×4 blocks, for example. Generally, there are two categories of coding schemes—lossless coding and lossy coding. Lossless coding reduces the amount of image data required to represent an image or video, while maintaining the full integrity of the source image or video. Lossy coding reduces the amount of image data, but may result in some degradation of the image quality.
One problem with existing digital image systems is the large number of formats and coding schemes that are used to encode image data. It is computationally intensive to process numerous different images that may be received in different formats and coding schemes. Additionally, in many applications, it may be desirable to obtain and use new coding schemes with particular properties and/or advantages that are not available in existing coding schemes. Further, it may be desirable to provide a system architecture for efficiently processing digital image data.